﻿Imports DevExpress.XtraBars.Helpers
Imports System.IO
Public Class frmAdminForm
    Sub New()

        ' This call is required by the designer.
        InitializeComponent()
        DevExpress.UserSkins.BonusSkins.Register()
        DevExpress.UserSkins.OfficeSkins.Register()
        SkinHelper.InitSkinGallery(RibbonGalleryBarItem1)
        ' Add any initialization after the InitializeComponent() call.

    End Sub
    Public maPhim As String
#Region "Các Sự Kiện"
    'Sự Kiện FormLoad
    Private Sub frmAdminForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        LoadTaiKhoan()
        LoadLoaiTK()
        LoadTheLoai()
        cmbGioiTinh.Text = "Nữ"
        NapThongTin()
        LoadPhim()
    End Sub
    'Sự Kiện chọn dòng trên datagripview
    Private Sub dgvTaiKhoan_SelectionChanged(sender As System.Object, e As System.EventArgs) Handles dgvTaiKhoan.SelectionChanged
        SuaTaiKhoan()
        'ThemTK()
        NapThongTin()
    End Sub

    'Sự kiện click button Xóa
    Private Sub bntXoa_Click(sender As System.Object, e As System.EventArgs) Handles bntXoa.Click
        DeleteTK()
    End Sub

    'Sự Kiện click button cập nhật
    Private Sub bntCapNhat_Click(sender As System.Object, e As System.EventArgs) Handles bntCapNhat.Click
        If (txtDiaChi.Text = "" Or txtEmail.Text = "" Or txtHoTen.Text = "" Or txtTenTK.Text = "") Then
            MessageBox.Show("Bạn phải điền đầy đủ vào mục", "Đã Có Lỗi Xảy Ra", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        Else
            Dim taik As New TaiKhoanDTO
            taik = taiKhoanFomr()
            If (TaiKhoanBUS.testTK(taik)) Then
                MessageBox.Show("Tên Tài Khoản Chưa Tồn Tại, Bạn Không Thể Cập Nhật", "Lỗi Cập Nhật", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Else
                TaiKhoanBUS.UpdateTK(taik)
                LoadTaiKhoan()
            End If
        End If

    End Sub

    'Sự Kiện click button Thêm Tài Khoản
    Private Sub bntThem_Click(sender As System.Object, e As System.EventArgs) Handles bntThem.Click
        If (txtDiaChi.Text = "" Or txtEmail.Text = "" Or txtHoTen.Text = "" Or txtTenTK.Text = "") Then
            MessageBox.Show("Bạn phải điền đầy đủ vào mục", "Đã Có Lỗi Xảy Ra", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        Else
            Dim taik As New TaiKhoanDTO
            taik = taiKhoanFomr()
            If (TaiKhoanBUS.testTK(taik) = False) Then
                MessageBox.Show("Tên Tài Khoản Đã Tồn Tại, Không Thể Thêm", "Lỗi Thêm Tài Khoản", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Else
                If (TaiKhoanBUS.testEmail(taik)) Then
                    TaiKhoanBUS.themTaiKhoan(taik)
                    LoadTaiKhoan()
                Else
                    MessageBox.Show("Email đã tồn tại, Không Thể Thêm", "Lỗi Thêm Tài Khoản", MessageBoxButtons.OK, MessageBoxIcon.Error)
                End If

            End If
        End If
       
    End Sub

    'Sự kiện click vào button thêm phim trên toolbar
    Private Sub bntThemPhim_ItemClick(sender As System.Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bntThemPhim.ItemClick
        frmThemPhimMoi.ShowDialog()
    End Sub

    'Sự kiện click vào tapQuanLiPHim
    Private Sub tabQuanLiPhim_Click(sender As System.Object, e As System.EventArgs) Handles tabQuanLiPhim.Click
        LoadPhim()
        LoadChatLUong()
        dgvChiTietPhim.ClearSelection()
    End Sub

    'Sự kiện click button xóa trên toolbar
    Private Sub bntXoaPhim_ItemClick(sender As System.Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bntXoaPhim.ItemClick
        If (dgvChiTietPhim.SelectedRows.Count > 0) Then
            XoaCTPhim()
        Else
            If (dgvPhim.SelectedRows.Count > 0) Then
                XoaPhim()
            End If
        End If

    End Sub

    'thay đổi dòng chọn của datagrid view hiển thị phim
    Private Sub dgvPhim_SelectionChanged(sender As System.Object, e As System.EventArgs) Handles dgvPhim.SelectionChanged
        CapNhapPhim()
        loadCTPhim()
    End Sub

    'Sự kiện double click lên danh sách phim
    Private Sub dgvPhim_DoubleClick(sender As System.Object, e As System.EventArgs) Handles dgvPhim.DoubleClick
        If (dgvPhim.SelectedRows.Count > 0) Then
            maPhim = dgvPhim.SelectedRows(0).Cells(0).Value
            frmThemCTPhim.ShowDialog()
        End If
    End Sub
#End Region
#Region "Các Hàm Xử Lí"
#Region "Hàm Xử Lí Với Tài Khoản"
    'Hàm Load thông tin tài khoản vào datagridview
    Sub LoadTaiKhoan()
        dgvTaiKhoan.DataSource = TaiKhoanBUS.loadTaiKhoan()
    End Sub
    'Hàm Thêm Tài Khoản
    Sub ThemTK()
        Dim tb As New DataTable
        tb = CType(dgvTaiKhoan.DataSource, DataTable)
        For i As Integer = 0 To tb.Rows.Count - 1
            If (tb.Rows(i).RowState = DataRowState.Added) Then
                Dim tak As New TaiKhoanDTO
                tak.tenTaiKhoan = tb.Rows(i)(0)
                tak.loaiTaiKhoan = tb.Rows(i)(1)
                tak.hoVaTen = tb.Rows(i)(2)
                tak.gioiTinh = tb.Rows(i)(3)
                tak.ngaySinh = tb.Rows(i)(4)
                tak.diaChi = tb.Rows(i)(5)
                tak.email = tb.Rows(i)(6)
                tak.theLoaiYeuThich = tb.Rows(i)(7)
                If (TaiKhoanBUS.testTK(tak) = False) Then
                    MessageBox.Show("Tên Tài Khoản Đã Tồn Tại, Không Thể Thêm", "Lỗi Thêm Tài Khoản", MessageBoxButtons.OK, MessageBoxIcon.Error)

                Else
                    TaiKhoanBUS.themTaiKhoan(tak)
                    LoadTaiKhoan()
                End If
            End If
        Next

    End Sub
    'Hàm Cập Nhật tài khoản
    Sub SuaTaiKhoan()
        Dim tak As New TaiKhoanDTO
        Dim tb As New DataTable
        tb = CType(dgvTaiKhoan.DataSource, DataTable)
        For i As Integer = 0 To tb.Rows.Count - 1
            If (tb.Rows(i).RowState = DataRowState.Modified) Then
                tak.tenTaiKhoan = tb.Rows(i)(0)
                tak.loaiTaiKhoan = tb.Rows(i)(1)
                tak.hoVaTen = tb.Rows(i)(2)
                tak.gioiTinh = tb.Rows(i)(3)
                tak.ngaySinh = tb.Rows(i)(4)
                tak.diaChi = tb.Rows(i)(5)
                tak.email = tb.Rows(i)(6)
                tak.theLoaiYeuThich = tb.Rows(i)(7)
                If (TaiKhoanBUS.testTK(tak)) Then
                    MessageBox.Show("Tên Tài Khoản Chưa Tồn Tại, Bạn Không Thể Cập Nhật", "Lỗi Cập Nhật", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    LoadTaiKhoan()
                Else
                    TaiKhoanBUS.UpdateTK(tak)
                    LoadTaiKhoan()
                End If
            End If
        Next
        'LoadTaiKhoan()
    End Sub
    'Hàm Xóa Tài Khoản
    Sub DeleteTK()
        Dim taik As New TaiKhoanDTO
        taik.tenTaiKhoan = dgvTaiKhoan.CurrentRow.Cells(0).Value
        TaiKhoanBUS.DeleteTK(taik)
        LoadTaiKhoan()
    End Sub
    'Hàm Load Loại Tài Khoản Vào combobox
    Sub LoadLoaiTK()
        Dim dt As New DataTable
        dt = LoaiTaiKhoanBUS.loadLoaiTK
        cmbLoaiTK.DataSource = dt
        cmbLoaiTK.DisplayMember = "TenLoai"
        cmbLoaiTK.ValueMember = "MaLoai"
    End Sub
    'Hàm Load Thể Loại Phim vào Combobox
    Sub LoadTheLoai()
        Dim dt As New DataTable
        dt = TheLoaiBUS.loadTheLoai()
        cmbTheLoaiThich.DataSource = dt
        cmbTheLoaiThich.DisplayMember = "TenTheLoai"
        cmbTheLoaiThich.ValueMember = "MaTheLoai"
    End Sub

    'Hàm Lấy thông tin từ datagridview
    Function LayThongtin() As TaiKhoanDTO
        Dim taik As New TaiKhoanDTO
        If (dgvTaiKhoan.SelectedRows.Count > 0) Then
            taik.tenTaiKhoan = dgvTaiKhoan.SelectedRows(0).Cells(0).Value
            taik.loaiTaiKhoan = dgvTaiKhoan.SelectedRows(0).Cells(1).Value
            taik.hoVaTen = dgvTaiKhoan.SelectedRows(0).Cells(2).Value
            taik.gioiTinh = dgvTaiKhoan.SelectedRows(0).Cells(3).Value
            taik.ngaySinh = dgvTaiKhoan.SelectedRows(0).Cells(4).Value
            taik.diaChi = dgvTaiKhoan.SelectedRows(0).Cells(5).Value
            taik.email = dgvTaiKhoan.SelectedRows(0).Cells(6).Value
            taik.theLoaiYeuThich = dgvTaiKhoan.SelectedRows(0).Cells(7).Value
            Return taik
        End If
    End Function

    'Hàm Load thông tin vào textbox và combobox
    Sub NapThongTin()
        If (dgvTaiKhoan.SelectedRows.Count > 0 AndAlso dgvTaiKhoan.SelectedRows(0).Index <> dgvTaiKhoan.RowCount - 1) Then
            Dim taik As New TaiKhoanDTO
            Dim tl As New TheLoaiDTO
            Dim ltk As New LoaiTaiKhoanDTO
            taik = LayThongtin()
            tl.maTheLoai = taik.theLoaiYeuThich 'Lỗi
            ltk.maLoai = taik.loaiTaiKhoan
            txtDiaChi.Text = taik.diaChi
            txtHoTen.Text = taik.hoVaTen
            txtTenTK.Text = taik.tenTaiKhoan
            txtEmail.Text = taik.email
            cmbGioiTinh.Text = taik.gioiTinh
            cmbLoaiTK.Text = LoaiTaiKhoanBUS.returnLTK(ltk)
            'LoaiTaiKhoanBUS.returnLTK(ltk)
            dtNgaysinh.Value = taik.ngaySinh
            cmbTheLoaiThich.Text = TheLoaiBUS.returnTL(tl)
        End If


    End Sub

    'Hàm gán các giá trị từ textbox combobox vào biến TaiKhoan
    Function taiKhoanFomr() As TaiKhoanDTO
        Dim taik As New TaiKhoanDTO
        taik.tenTaiKhoan = txtTenTK.Text
        taik.theLoaiYeuThich = cmbTheLoaiThich.SelectedValue
        taik.ngaySinh = dtNgaysinh.Value
        taik.loaiTaiKhoan = cmbLoaiTK.SelectedValue
        taik.hoVaTen = txtHoTen.Text
        taik.gioiTinh = cmbGioiTinh.Text
        taik.diaChi = txtDiaChi.Text
        taik.email = txtEmail.Text
        Return taik
    End Function

#End Region
#Region "Hàm Xử Lí Với PHim"
    'Hàm Load Phim vào datagridview
    Public Sub LoadPhim()
        dgvPhim.DataSource = PhimBUS.loadPhim()
    End Sub

    'Hàm Xóa Phim
    Sub XoaPhim()
        Dim phim As New PhimDTO
        Dim ctPhim As New ChiTietPhimDTO
        If (dgvPhim.SelectedRows.Count > 0 AndAlso dgvPhim.SelectedRows(0).Index <> dgvPhim.RowCount - 1) Then
            phim.maPhim = dgvPhim.SelectedRows(0).Cells(0).Value
            ctPhim.maPhim = phim.maPhim
            If (ChiTietPhimBUS.testCTPhim(ctPhim)) Then
                Dim ketqua As DialogResult = MessageBox.Show("Phim này đã có chi tiết phim kèm theo, nếu bạn xóa thì tất cả chi tiết phim sẽ mất", "Bạn Có chắc là muốn xóa", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning)
                If (ketqua.ToString() = "OK") Then
                    ChiTietPhimBUS.xoaTatCa(ctPhim)
                    PhimBUS.xoaPhim(phim)
                    LoadPhim()
                Else
                    Return
                End If
            Else
                Dim ketqua As DialogResult
                ketqua = MessageBox.Show("Bạn Có chắc muốn xóa phim này?", "Bạn Có chắc là muốn xóa", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1)
                If (ketqua.ToString() = "OK") Then
                    PhimBUS.xoaPhim(phim)
                    LoadPhim()
                End If
            End If
        Else
            MessageBox.Show("Bạn phải chọn phim thì mới xóa được")
        End If
    End Sub

    'Hàm Cập Nhật Phim trên lưới
    Sub CapNhapPhim()
        Dim phim As New PhimDTO
        Dim tb As New DataTable
        tb = CType(dgvPhim.DataSource, DataTable)
        For i As Integer = 0 To tb.Rows.Count - 1
            If (tb.Rows(i).RowState = DataRowState.Modified) Then
                phim.maPhim = tb.Rows(i)(0)
                phim.tenPhim = tb.Rows(i)(1)
                phim.maTheLoai = tb.Rows(i)(2)
                phim.tomTat = tb.Rows(i)(3)
                'MessageBox.Show(phim.maPhim)
                PhimBUS.CapNhatPhim(phim)
                LoadPhim()
            End If
        Next
    End Sub

    'Hàm load Chi tiết phim
    Public Sub loadCTPhim()
        If (dgvPhim.SelectedRows.Count > 0) Then
            Dim ctphim As New ChiTietPhimDTO
            ctphim.maPhim = dgvPhim.SelectedRows(0).Cells(0).Value
            dgvChiTietPhim.DataSource = ChiTietPhimBUS.loadCTPhim(ctphim)
        End If
    End Sub

    Sub XoaCTPhim()
        Dim ctPhim As New ChiTietPhimDTO
        Dim link As New LinkPhimDTO
        If (dgvChiTietPhim.SelectedRows.Count > 0 AndAlso dgvChiTietPhim.SelectedRows(0).Index <> dgvChiTietPhim.RowCount - 1) Then
            ctPhim.maPhim = dgvChiTietPhim.SelectedRows(0).Cells(0).Value
            ctPhim.daoDien = dgvChiTietPhim.SelectedRows(0).Cells(1).Value
            ctPhim.namSanXuat = dgvChiTietPhim.SelectedRows(0).Cells(2).Value
            ctPhim.hinhAnh = dgvChiTietPhim.SelectedRows(0).Cells(5).Value
            link.namSanXuat = ctPhim.namSanXuat
            link.maPhim = ctPhim.maPhim
            link.daoDien = ctPhim.daoDien
            Dim ketqua As DialogResult
            ketqua = MessageBox.Show("Bạn chắc chắn là muốn xóa chứ?", "Bạn Có chắc là muốn xóa", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning)
            If (ketqua.ToString() = "OK") Then
                LinkPhimBUS.xoaLink(link)
                ChiTietPhimBUS.xoaCTPhim(ctPhim)
                Try
                    Dim file As New FileInfo(Application.StartupPath + "\HinhAnh\" + ctPhim.hinhAnh)
                    file.Delete()
                Catch ex As Exception
                End Try
                LoadPhim()
                loadCTPhim()
            Else
                Return
            End If
        Else
            MessageBox.Show("Bạn phải chọn phim thì mới xóa được")
        End If
    End Sub


    Sub UpdateCTPhim()
        Dim ctphim As New ChiTietPhimDTO
        Dim tb As New DataTable
        tb = CType(dgvChiTietPhim.DataSource, DataTable)
        For i As Integer = 0 To tb.Rows.Count - 1
            If (tb.Rows(i).RowState = DataRowState.Modified) Then
                ctphim.maPhim = tb.Rows(i)(0)
                ctphim.daoDien = tb.Rows(i)(1)
                ctphim.namSanXuat = tb.Rows(i)(2)
                ctphim.quocGia = tb.Rows(i)(3)
                ctphim.thoiLuong = tb.Rows(i)(4)
                ctphim.hinhAnh = tb.Rows(i)(5)
                ctphim.ngayNhap = tb.Rows(i)(6)
                ChiTietPhimBUS.updateCTPhim(ctphim)
            End If
        Next
    End Sub

    'Hàm Tách dòng trong textbox
    Function LayLinkTrongTextbox() As String()
        Dim s() As String
        s = txtLink.Text.Split(vbNewLine)
        For i As Integer = 0 To s.Length - 1
            Trim(s(i))
            Replace(s(i), vbNewLine, "")
        Next
        Return s
    End Function

    'Hàm thêm link phim từ textbox
    Sub ThemLinkPhim()
        If (dgvChiTietPhim.SelectedRows.Count > 0 AndAlso dgvChiTietPhim.RowCount - 1 <> dgvChiTietPhim.SelectedRows(0).Index) Then
            If (txtLink.Text <> "") Then
                Dim s() As String
                s = LayLinkTrongTextbox()
                Dim link As New LinkPhimDTO
                link.maPhim = dgvChiTietPhim.SelectedRows(0).Cells(0).Value
                link.daoDien = dgvChiTietPhim.SelectedRows(0).Cells(1).Value
                link.namSanXuat = dgvChiTietPhim.SelectedRows(0).Cells(2).Value
                link.chatLuong = cmbChatLuong.SelectedValue
                LinkPhimBUS.xoaLinkTheoCL(link)
                For i As Integer = 0 To s.GetLength(0) - 1
                    If (s(i) <> "") Then
                        MessageBox.Show(txtLink.Text)
                        link.linkPhim = s(i)
                        Try
                            LinkPhimBUS.ThemLinkphim(link)
                        Catch ex As Exception
                            MessageBox.Show("Có Link đã bị trùng", "Thông Báo Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error)
                        End Try
                    End If
                Next
            Else
                MessageBox.Show("Bạn phải điền link vào khung", "Thông Báo Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            End If
        Else
            MessageBox.Show("Bạn Phải chọn phim thì mới thêm link được", "Thông Báo Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Warning)
        End If
    End Sub


    Sub LoadChatLUong()
        cmbChatLuong.DataSource = ChatLuongBUS.loadChatLuong()
        cmbChatLuong.DisplayMember = "TenChatLuong"
        cmbChatLuong.ValueMember = "MaChatLuong"
    End Sub

    'Hàm Load Link vào textbox
    Sub loadLinkPhim()
        txtLink.Text = ""
        If (dgvChiTietPhim.SelectedRows.Count > 0 AndAlso dgvChiTietPhim.SelectedRows(0).Index <> dgvChiTietPhim.RowCount - 1) Then
            Dim link As New LinkPhimDTO
            link.maPhim = dgvChiTietPhim.SelectedRows(0).Cells(0).Value
            link.daoDien = dgvChiTietPhim.SelectedRows(0).Cells(1).Value
            link.namSanXuat = dgvChiTietPhim.SelectedRows(0).Cells(2).Value
            link.chatLuong = cmbChatLuong.SelectedValue
            Dim dt As New DataTable
            dt = LinkPhimBUS.loadLink(link)
            If (dt.Rows.Count > 0) Then
                For i As Integer = 0 To dt.Rows.Count - 1
                    If (i <> dt.Rows.Count - 1) Then
                        txtLink.Text += dt.Rows(i)(0).ToString() & vbNewLine
                    Else
                        txtLink.Text += dt.Rows(i)(0).ToString()
                    End If
                Next
            End If
        End If
    End Sub

    'Hàm bỏ khoảng trống của link 
    Sub Botrong(ByRef str As String)
        Dim i As Long
        str = Trim(str)
        If Len(str) > 3 Then
            For i = 2 To Len(str) - 1
                If InStr(1, str, "  ") <> 0 Then
                    str = Replace(str, " ", "", 1)
                    str = Replace(str, vbNewLine, "", 1)
                End If
            Next i
        End If
    End Sub
   

#End Region

#End Region

 

    Private Sub dgvPhim_Click(sender As System.Object, e As System.EventArgs) Handles dgvPhim.Click
        dgvChiTietPhim.ClearSelection()
    End Sub

    Private Sub dgvChiTietPhim_Click(sender As System.Object, e As System.EventArgs) Handles dgvChiTietPhim.Click
        dgvPhim.ClearSelection()
    End Sub

    Private Sub dgvChiTietPhim_SelectionChanged(sender As System.Object, e As System.EventArgs) Handles dgvChiTietPhim.SelectionChanged
        UpdateCTPhim()
        loadLinkPhim()
    End Sub

    Private Sub BarButtonItem1_ItemClick(sender As System.Object, e As DevExpress.XtraBars.ItemClickEventArgs)
        XoaCTPhim()
    End Sub

    Private Sub bntLink_Click(sender As System.Object, e As System.EventArgs) Handles bntLink.Click
        ThemLinkPhim()
    End Sub

    Private Sub cmbChatLuong_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbChatLuong.SelectedIndexChanged
        loadLinkPhim()
    End Sub

    Private Sub bntAbout_ItemClick(sender As System.Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bntAbout.ItemClick
        About.ShowDialog()
    End Sub
End Class